package com.cn.study0012;

import java.util.Scanner;

/**
 * @author lw
 * @ClassName Game.java
 * @Description   游戏类
 * @createTime 2023年05月17日 10:29:00
 */
public class Game {
    String[] c_str=new String[]{"刘备","孙权","曹操"};  //电脑玩家
    int count=0;                    //对战次数
    String mark;                  //判断是否继续
    int m;
    String[] g=new String[]{"剪刀","石头","布"};
    Computer computer=new Computer();
    User user=new User();
    Scanner sc=new Scanner(System.in);
    /**
     * 初始化
     */
    public void init(){
        do {
            System.out.print("-----------------------");
            System.out.print("欢 迎 进 入 游 戏 世 界");
            System.out.println("-----------------------");
            System.out.println("\n\t\t\t***********************");
            System.out.println("\t\t\t******* 猜拳，开始 ******");
            System.out.println("\t\t\t***********************\n");
            System.out.println("出拳规则：1.剪刀2.石头3.布");
            System.out.print("请输入对方角色（1:刘备2:孙权3:曹操）：");
            int s_c=sc.nextInt();
            if (s_c==1){
                computer.name=c_str[0];
            }else if (s_c==2){
                computer.name=c_str[1];
            }else if (s_c==3){
                computer.name=c_str[2];
            }else {
                System.out.println("输入错误！");
                continue;
            }
            System.out.print("请输入你的姓名：");
            user.name=sc.next();         //用户玩家
            System.out.println("您选择了与"+computer.name+"对战");
            break;
        }while(true);
    }

    /**
     * 开始游戏
     */
    public void startGame(){
        System.out.print("\n要开始吗？（y/n）:");
        mark=sc.next();
        if (mark.equals("y")){
            do {
                do {
                    System.out.print("\n请出拳：1.剪刀2.石头3.布（输入相应数字）：");
                    if (sc.hasNextInt()){
                        int n=sc.nextInt();      //用户出拳
                        if (n==1){
                            user.t=1;
                            System.out.println("你出拳："+g[0]);
                        }else if (n==2){
                            user.t=2;
                            System.out.println("你出拳："+g[1]);
                        }else if (n==3){
                            user.t=3;
                            System.out.println("你出拳："+g[2]);
                        }else {
                            System.out.print("\n输入错误！请重新输入");
                            continue;
                        }
                        m=computer.c_fist();     //电脑出拳
                        if (m==1){
                            System.out.println(computer.name+"出拳："+g[0]);
                            calResults();
                            count++;
                            break;
                        }else if (m==2){
                            System.out.println(computer.name+"出拳："+g[1]);
                            calResults();
                            count++;
                            break;
                        }else if (m==3){
                            System.out.println(computer.name+"出拳："+g[2]);
                            calResults();
                            count++;
                            break;
                        }
                    }else {
                        System.out.println("\n输入错误！请输入数字！");
                        continue;
                    }
                }while (true);
                do {
                    System.out.print("\n是否开始下一轮？（y/n）:");
                    mark=sc.next();
                    if (mark.equals("y")){
                        break;
                    }else if (mark.equals("n")){
                        showResults();
                        break;
                    }else {
                        System.out.println("\n输入错误！请重新输入：");
                    }
                }while (true);
            }while (!mark.equals("n"));
        }else if(mark.equals("n")){
            System.out.println("退出！");
        }
    }

    /**
     * 计算对战结果
     */
    public void calResults(){
        if(user.showFist()==m){
            System.out.println("结果：(*^▽^*)，竟然是和局，嘿嘿，等着瞧吧！");
        }else if (user.showFist()==1&&m==3){
            user.integral++;
            System.out.println("结果：o(*≧д≦)o!!，恭喜，你赢了");
        }else if (user.showFist()==3&&m==1){
            computer.integral++;
            System.out.println("结果：(๑*◡*๑)，你输了，真笨！");
        }else if (user.showFist()==2&&m==1){
            user.integral++;
            System.out.println("结果：o(*≧д≦)o!!，恭喜，你赢了");
        }else if (user.showFist()==1&&m==2){
            computer.integral++;
            System.out.println("结果：(๑*◡*๑)，你输了，真笨！");
        }else if (user.showFist()==3&&m==2){
            user.integral++;
            System.out.println("结果：o(*≧д≦)o!!，恭喜，你赢了");
        }else if (user.showFist()==2&&m==3){
            computer.integral++;
            System.out.println("结果：(๑*◡*๑)，你输了，真笨！");
        }else {
            System.out.println("***"+user.showFist()+"**"+computer.c_fist());
        }
    }

    /**
     * 显示对战结果
     */
    public void showResults(){
        System.out.println(computer.name+"  VS  "+user.name);
        System.out.println("对战次数"+count+"\n");
        System.out.println("姓名\t\t\t得分");
        System.out.println(user.name+"\t\t\t"+user.integral);
        System.out.println(computer.name+"\t\t\t"+computer.integral);
        if (user.integral>computer.integral){
            System.out.println("结果："+user.name+" 恭喜恭喜！");
        }else if(user.integral<computer.integral){
            System.out.println("结果：呵呵，真笨，下次加油吧！");
        }else {
            System.out.println("结果：ε=(´ο｀*)))唉，平局");
        }
    }
}
